/**
 * Title：Pager.java
 * Description: 分页Pager对象
 * Function: 分页
 * Copyright: Copyright (c) 2012-04-12
 * Company: Camelot
 * Author : 刘浩
 * Version 1.0
 */
package com.camelot.ccr.global.util;

import java.util.List;
/**
 * <pre>
 * 分页辅助类
 * </pre>
 * @param <T> 泛型
 * @author Liu Jun
 * @version V0.1, 2013-12-27 上午10:19:39
 */
public class Pager<T> {

	private List<T> searchList = null;// 页面要显示的结果
	private int rows = 100; // 每页显示数
	private int start = 1; // 开始条数
	private int end = 1; // 结束条数
	private long sum; // 总数
	private int page = 1; // 当前页
	private long pages = 1; // 总页数

	/**
	 * 构造函数
	 * @param page 当前页
	 * @param rows 每页显示记录数
	 */
	public Pager(int page, int rows) {
		super();
		setPage(page);
		this.rows = rows;
	}
	/**
	 * 默认构造函数
	 */
	public Pager() {
	}
	/**
	 * <pre>
	 * 得到当前页
	 * </pre>
	 * @return 返回当前页
	 * @author Liu Jun, 2013-12-27 上午10:20:58
	 */
	public int getPage() {
		return page;
	}
	/**
	 * <pre>
	 * 设置当前页
	 * </pre>
	 * @param page 当前页
	 * @author Liu Jun, 2013-12-27 上午10:21:27
	 */
	public void setPage(int page) {
		if (page < 1) {
			this.page = 1;
		}else{
			this.page = page;
		}
	}
	/**
	 * <pre>
	 * 获得数据库的截止位置
	 * </pre>
	 * @return 计算出数据库的截止位置
	 * @author Liu Jun, 2013-12-27 上午10:23:35
	 */
	public int getEnd() {
		end = this.getStart() + rows;
		return end;
	}
	/**
	 * <pre>
	 * 计算有多少页数
	 * </pre>
	 * @return 计算页数
	 * @author Liu Jun, 2013-12-27 上午10:29:22
	 */
	public long getPages() {
		if (sum % rows == 0) {
			pages = sum / rows;
		} else {
			pages = sum / rows + 1;
		}
		return pages;
	}
	/**
	 * <pre>
	 * 设置有多少页数
	 * </pre>
	 * @param pages 页数
	 * @author Liu Jun, 2013-12-27 上午10:32:30
	 */
	public void setPages(long pages) {
		this.pages = pages;
	}
	/**
	 * <pre>
	 * 得到每页显示条数
	 * </pre>
	 * @return 每页显示条数
	 * @author Liu Jun, 2013-12-27 上午10:33:04
	 */
	public int getRows() {
		return rows;
	}
	/**
	 * <pre>
	 * 设置每页显示条数
	 * </pre>
	 * @param rows 每页显示条数
	 * @author Liu Jun, 2013-12-27 上午10:33:40
	 */
	public void setRows(int rows) {
		this.rows = rows;
	}
	/**
	 * <pre>
	 * 计算数据库里开始位置
	 * </pre>
	 * @return 返回数据库开始位置
	 * @author Liu Jun, 2013-12-27 上午10:34:18
	 */
	public int getStart() {
		if (this.getPage() == 0) {
			start = 0;
		} else {
			start = (this.getPage() - 1) * rows;// +1
		}
		return start;
	}
	/**
	 * <pre>
	 * 得到总记录数
	 * </pre>
	 * @return 得到总记录数
	 * @author Liu Jun, 2013-12-27 上午10:39:01
	 */
	public long getSum() {
		return sum;
	}
	/**
	 * <pre>
	 * 设置总记录数
	 * </pre>
	 * @param sum 总记录数
	 * @author Liu Jun, 2013-12-27 上午10:39:52
	 */
	public void setSum(long sum) {
		this.sum = sum;
	}
	/**
	 * <pre>
	 * 得到查询结果集
	 * </pre>
	 * @return 得到结果集
	 * @author Liu Jun, 2013-12-27 上午10:40:36
	 */
	public List<T> getSearchList() {
		return searchList;
	}
	/**
	 * <pre>
	 * 设置结果集
	 * </pre>
	 * @param searchList 结果集
	 * @author Liu Jun, 2013-12-27 上午10:41:15
	 */
	public void setSearchList(List<T> searchList) {
		this.searchList = searchList;
	}

}
